'''
@Project ：hdcms-scripts
@File    ：create_course.py
@IDE     ：PyCharm
@Author  ：朱广杰
@Date    ：2024/11/5 16:49
'''

from faker import Factory
import jsonpath
from common.hd_log import mylog
from common.hd_response import CaseResponse
from common.hd_exception import except_script_error
from datetime import datetime
from script.api.course.create_course import CopyCourseInfoApi, GetCourseIdApi, UpdateCourseApi, UpdateCourseVideoApi


@except_script_error
def create_course():
    """
        @api {post} /create_course 创建课程数据
        @apiGroup 课程
        @apiName create_course
        @apiDescription  创建课程数据
        @apiPermission zgj
        @apiSuccess (200) {Integer} responseCode 服务器码
        @apiSuccess (200) {String} responseMsg 提示语
        @apiSuccess (200) {Object} responseData 造数成功返回相关的数据
        @apiSuccessExample {json} 返回示例:
        {
            "responseCode": 0,
            "responseMsg": "请求成功",
            "responseData": {
                "course_id": "06449e94e532561125195db241d9aab3",
                "course_name": "重新定义真需求：用一个原创模型，解密中国商业崛起30年"
            }
        }
        """
    try:
        cci_resp = CopyCourseInfoApi().send()
        mylog.info(f'调用导入课程接口成功，接口返回是：{cci_resp.json()}')
        gci_resp = GetCourseIdApi().send()
        mylog.info(f'调用获取课程列表接口成功，接口返回是：{gci_resp.json()}')
        course_id = jsonpath.jsonpath(gci_resp.json(), '$..course_id')[0]
        mylog.info(f'获取到最新创建的课程ID，ID是：{course_id}')
        course_name = jsonpath.jsonpath(gci_resp.json(), '$..course_title')[0]
        mylog.info(f'获取到最新创建的课程名称，课程名称是：{course_name}')
        uc_resp = UpdateCourseApi(course_id).send()
        mylog.info(f'调用修改课程接口成功，接口返回是：{uc_resp.json()}')
        ucv_resp = UpdateCourseVideoApi(course_id).send()
        mylog.info(f'调用修改课程视频接口成功，接口返回是：{ucv_resp.json()}')
    except Exception as e:
        mylog.error(f'脚本执行失败，失败原因：{e}')
        raise Exception(f'脚本执行失败，失败原因：{e}')
    res = {"course_id": course_id, "course_name": course_name}
    now_time = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
    demo_log = f"""
[{now_time}]: 脚本开始 -> 进行一键新增课程数据
[{now_time}]: 脚本执行 -> 获取登录 token
[{now_time}]: 脚本执行 -> 调用导入课程接口
[{now_time}]: 脚本执行 -> 获取最新创建课程
[{now_time}]: 脚本执行 -> 选中课程编辑并上线
[{now_time}]: 脚本执行 -> 进行回放配置数据编辑
[{now_time}]: 脚本结束 -> 进行一键新增课程数据
"""
    return CaseResponse.success(data=res), demo_log
